home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / ARASAN_S.ZIP / SORTMOVE.CPP < prev    next >
C/C++ Source or Header  |  1994-02-22  |  790b  |  44 lines

  1. // Copyright 1992 by Jon Dart.  All Rights Reserved.
  2.  
  3. #include "moveord.h"
  4.  
  5. // We put this function in a separate file because it is the only
  6. // part of Move_Ordering that the "makebook" program needs.
  7.  
  8. void Move_Ordering::sort_moves(Move moves[], int scores[], int n)
  9. {
  10.     // uses Shell sort
  11.  
  12.     int gap, i, j, tj, tc;
  13.     Move t;
  14.  
  15.     gap = n / 2;
  16.     while (gap)
  17.     {
  18.     for (i = gap; i < n; i++)
  19.     {
  20.         j = i - gap;
  21.         while (j >= 0)
  22.         {
  23.         tj = j + gap;
  24.         if (scores[j] < scores[tj])
  25.         {
  26.             t = moves[j];
  27.             moves[j] = moves[tj];
  28.             moves[tj] = t;
  29.             tc = scores[j];
  30.             scores[j] = scores[tj];
  31.             scores[tj] = tc;
  32.         } else
  33.             break;
  34.         if (j >= gap)
  35.             j -= gap;
  36.         else
  37.             break;
  38.         }
  39.     }
  40.     gap /= 2;
  41.     }
  42. }
  43.  
  44.